package com.uinnova.product.eam.service;

import com.alibaba.fastjson.JSONObject;
import com.binary.jdbc.Page;
import com.uinnova.product.eam.model.cj.domain.TemplateType;
import com.uinnova.product.eam.model.cj.request.PlanDesignInstanceAddRequest;
import com.uinnova.product.eam.model.cj.vo.DiagramPlanVO;
import com.uinnova.product.eam.model.es.PlanProcessRelation;
import com.uinnova.product.eam.vo.CheckPlanModuleReq;
import com.uinnova.product.eam.vo.CheckPlanModuleRes;
import com.uinnova.product.eam.vo.PlanPublishDirInfo;
import com.uinnova.product.eam.vo.PlanPublishDirReq;

import java.util.List;

public interface PlanService {

    /**
     * 获取方案发布位置信息
     * @param req
     * @return
     */
    PlanPublishDirInfo getPlanPublishDirInfo(PlanPublishDirReq req);

    /**
     * 保存架构方案
     * @param request
     * @return
     */
    Long save(PlanDesignInstanceAddRequest request);

    /**
     * 【架构设计清单】查询所有方案
     * 【架构设计-我的空间】内已绘制方案列表
     * @param jsonObject
     * @return
     */
    Page<DiagramPlanVO> getAllPlans(JSONObject jsonObject);

    /**
     * 查询方案模板类型及方案模板列表
     * @return
     */
    List<TemplateType> getTemplateList();

    /**
     * 根据方案id，章节id，内容块id-判断相应的模块是否存在
     * @param req
     * @return
     */
    CheckPlanModuleRes checkPlanModule(CheckPlanModuleReq req);

    /**
     * 已完结状态 根据流程id和架构设计中的方案id查询对应设计资产中对应版本的方案信息
     * @param processInstanceId
     * @param planId
     * @return
     */
    PlanProcessRelation getPlanByProcessId(String processInstanceId, Long planId);
}
